背景 第一次听说 SPI 是阅读《软件框架设计的艺术》,以后陆续在 Log4Net 和 Quartz.Net中发现了以这种形式组织代码的方式,本位给出为什么要区分 SPI 和 API 的一个思考过程 ...
背景 第一次听说 SPI 是阅读《软件框架设计的艺术》,以后陆续在 Log4Net 和 Quartz.Net中发现了以这种形式组织代码的方式,本位给出为什么要区分 SPI 和 API 的一个思考过程 ...
备注 不要重复自己,也不要重复别人,一旦养成了“拷贝和粘贴”的习惯,写程序的时候非常容易导致重复,好在一直暗示自己要稍后进行重构,本文给出一个重构的示例。 需求 需求:按照年、月和日显示销售数据 ...
背景知识 控制反转 反转传统的控制逻辑,常见的传统控制逻辑有: 一、客户类型负责创建依赖。反转后的结构是:由IOC负责创建。 二、客户类型调用框架。反转后的结果是:框架调用客户类型。 依赖注 ...
背景 今天上午和以为朋友聊了一个设计问题:如何消除仓库相关的单据的Repository中的重复逻辑?如:入库单Repository和出库单Repository之间的重复。可以有很多方式消除重复,在不 ...
依赖注入的定义 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题。 控制反转还有一个名字叫做依赖注入(Dependenc ...
接口的种类(API和SPI) 从接口的被调用方式和被实现方式看,接口有API和SPI之分,见下图: API和SPI在物理组织方式上的建议(可根据情况选择其一) 位于独立的 ...
背景 接触了一些非常优秀的编程人才,发现他们有一个共同的特点:“重视命名”,记得一位大师也曾说过:“命名和缓存是他最头痛的两个问题”,我不是一个注重细节的人,最起码从骨子里不是,因此我吃了不少苦头, ...
背景 我们执着于面《向对象编程》,而多数情况我们都在使用《面向类型编程》,今天简单快速的回顾一下对象的之间的关系。 先谈谈类型之间的关系 类型之间的依赖,这里进一步划分为两类: 显式 ...